/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package it.azienda.managerworkstandard.modello;

import it.azienda.framework.modello.BeanBase;
import it.azienda.framework.persistenza.DAOConnectionSingleton;
import java.util.Date;
import org.hibernate.Session;

/**
 *
 * @author micheleWork
 */
public class BeanClienteFed extends BeanBase {

    public BeanClienteFed() {
        this.data =  new Date(System.currentTimeMillis());
    }
    private Integer id;
    private BeanCliente beanCliente = new BeanCliente();
    private java.util.Date data;
    private String note;
    private Integer punti;
    private Integer saldo;
    private String tipoOperazione;

    /**
     * @return the id
     */
    public Integer getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * @return the beanCliente
     */
    public BeanCliente getBeanCliente() {
        return beanCliente;
    }

    /**
     * @param beanCliente the beanCliente to set
     */
    public void setBeanCliente(BeanCliente beanCliente) {
        this.beanCliente = beanCliente;
    }

    /**
     * @return the data
     */
    public java.util.Date getData() {
        return data;
    }

    /**
     * @param data the data to set
     */
    public void setData(java.util.Date data) {
        this.data = data;
    }

    /**
     * @return the note
     */
    public String getNote() {
        return note;
    }

    /**
     * @param note the note to set
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * @return the punti
     */
    public Integer getPunti() {
        return punti;
    }

    /**
     * @param punti the punti to set
     */
    public void setPunti(Integer punti) {
        this.punti = punti;
    }

    /**
     * @return the tipoOperazione
     */
    public String getTipoOperazione() {
        return tipoOperazione;
    }

    /**
     * @param tipoOperazione the tipoOperazione to set
     */
    public void setTipoOperazione(String tipoOperazione) {
        this.tipoOperazione = tipoOperazione;
    }

    /**
     * @return the saldo
     */
    public Integer getSaldo() {
        if (beanCliente != null) {
            if (beanCliente.getId() != null) {
                String query = "select sum(punti) from BeanClienteFed fed"
                        + " where fed.beanCliente.id = :idCliente"
                        + " and fed.data <= :data";
                Session sessione = DAOConnectionSingleton.newSession();
                try{
                Object obj = sessione.createQuery(query)
                        .setInteger("idCliente", beanCliente.getId().intValue())
                        .setDate("data", data)
                        .uniqueResult();       
                if(obj != null){
                    saldo = new Integer(obj.toString());
                }
                }catch(Exception e ){
                    e.printStackTrace();
                }
            }
        }
        
        if(saldo == null){
            saldo = new Integer(0);
        }
        return saldo;
    }

    /**
     * @param saldo the saldo to set
     */
    public void setSaldo(Integer saldo) {
        this.saldo = saldo;
    }
}
